home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / libg_261.zip / libg_261 / libg++ / gperf / tests / test-2.exp < prev    next >
Text File  |  1992-12-21  |  5KB  |  183 lines

  1. /* C code produced by gperf version 2.5 (GNU C++ version) */
  2. /* Command-line: ../src/gperf -n -k1-8 -l  */
  3.  
  4. #define TOTAL_KEYWORDS 40
  5. #define MIN_WORD_LENGTH 2
  6. #define MAX_WORD_LENGTH 14
  7. #define MIN_HASH_VALUE 1
  8. #define MAX_HASH_VALUE 256
  9. /* maximum key range = 256, duplicates = 0 */
  10.  
  11. static unsigned int
  12. hash (str, len)
  13.      register char *str;
  14.      register int unsigned len;
  15. {
  16.   static unsigned short asso_values[] =
  17.     {
  18.      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
  19.      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
  20.      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
  21.      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
  22.      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
  23.      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
  24.      257, 257, 257, 257, 257,  25,  30,  35,  21,   0,
  25.       30,  15,  30,  45, 257, 257,   0,   5,  45,   0,
  26.       10,   0,   1,  20,  25,  15,  30,  40,  15,   5,
  27.      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
  28.      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
  29.      257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
  30.      257, 257, 257, 257, 257, 257, 257, 257,
  31.     };
  32.   register int hval = 0;
  33.  
  34.   switch (len)
  35.     {
  36.       default:
  37.       case 8:
  38.         hval += asso_values[str[7]];
  39.       case 7:
  40.         hval += asso_values[str[6]];
  41.       case 6:
  42.         hval += asso_values[str[5]];
  43.       case 5:
  44.         hval += asso_values[str[4]];
  45.       case 4:
  46.         hval += asso_values[str[3]];
  47.       case 3:
  48.         hval += asso_values[str[2]];
  49.       case 2:
  50.         hval += asso_values[str[1]];
  51.       case 1:
  52.         hval += asso_values[str[0]];
  53.     }
  54.   return hval;
  55. }
  56.  
  57. char *
  58. in_word_set (str, len)
  59.      register char *str;
  60.      register unsigned int len;
  61. {
  62.  
  63.   static unsigned char lengthtable[] =
  64.     {
  65.       0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  4,  0,  0,  0,
  66.       0,  0,  0,  0,  0,  0,  4,  2,  0,  0,  0,  2,  3,  0,
  67.       0,  0,  2,  3,  0,  0,  0,  2,  4,  0,  0,  0,  4,  6,
  68.       0,  0,  0,  3,  0,  0,  0,  0,  0,  6,  0,  0,  0,  0,
  69.       3,  5,  6,  0,  0,  6,  0,  0,  0,  0,  3,  0,  0,  0,
  70.       3,  0,  0,  0,  0,  2,  0,  0,  0,  0,  4,  0,  0,  9,
  71.       0,  4,  6,  6,  0,  0,  2,  3,  0,  0,  0,  5,  3,  0,
  72.       0,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14,  0,
  73.       0,  0,  0,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,
  74.       7,  0,  0,  0,  5,  0,  0,  0,  0,  5,  0,  0,  0,  0,
  75.       4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  76.       0,  0,  0,  0,  0,  0,  9,  0,  0,  0,  0,  0,  0,  0,
  77.       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  78.       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  79.       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  80.       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  81.       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  82.       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
  83.       0,  0,  0,  0, 10,
  84.     };
  85.   static char *wordlist[] =
  86.     {
  87.       "", 
  88.       "OR", 
  89.       "", "", "", "", "", "", "", "", 
  90.       "LOOP", 
  91.       "", "", "", "", "", "", "", "", "", 
  92.       "ELSE", 
  93.       "DO", 
  94.       "", "", "", 
  95.       "TO", 
  96.       "MOD", 
  97.       "", "", "", 
  98.       "OF", 
  99.       "FOR", 
  100.       "", "", "", 
  101.       "BY", 
  102.       "FROM", 
  103.       "", "", "", 
  104.       "TYPE", 
  105.       "MODULE", 
  106.       "", "", "", 
  107.       "SET", 
  108.       "", "", "", "", "", 
  109.       "EXPORT", 
  110.       "", "", "", "", 
  111.       "VAR", 
  112.       "ARRAY", 
  113.       "RECORD", 
  114.       "", "", 
  115.       "REPEAT", 
  116.       "", "", "", "", 
  117.       "END", 
  118.       "", "", "", 
  119.       "NOT", 
  120.       "", "", "", "", 
  121.       "IF", 
  122.       "", "", "", "", 
  123.       "CASE", 
  124.       "", "", 
  125.       "PROCEDURE", 
  126.       "", 
  127.       "EXIT", 
  128.       "IMPORT", 
  129.       "RETURN", 
  130.       "", "", 
  131.       "IN", 
  132.       "AND", 
  133.       "", "", "", 
  134.       "ELSIF", 
  135.       "DIV", 
  136.       "", "", "", 
  137.       "THEN", 
  138.       "", "", "", "", "", "", "", "", "", 
  139.       "IMPLEMENTATION", 
  140.       "", "", "", "", 
  141.       "WHILE", 
  142.       "", "", "", "", "", "", "", "", "", 
  143.       "CONST", 
  144.       "POINTER", 
  145.       "", "", "", 
  146.       "UNTIL", 
  147.       "", "", "", "", 
  148.       "BEGIN", 
  149.       "", "", "", "", 
  150.       "WITH", 
  151.       "", "", "", "", "", "", "", "", "", 
  152.       "", "", "", "", "", "", "", "", "", 
  153.       "", "QUALIFIED", 
  154.       "", "", "", "", "", "", "", "", "", 
  155.       "", "", "", "", "", "", "", "", "", 
  156.       "", "", "", "", "", "", "", "", "", 
  157.       "", "", "", "", "", "", "", "", "", 
  158.       "", "", "", "", "", "", "", "", "", 
  159.       "", "", "", "", "", "", "", "", "", 
  160.       "", "", "", "", "", "", "", "", "", 
  161.       "", "", "", "", "", "", "", "", "", 
  162.       "", "", "", "", "", "", "", "", "", 
  163.       "", "", "", "", "", "", "", "", "", 
  164.       "", "", "", "", "", 
  165.       "DEFINITION", 
  166.     };
  167.  
  168.   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  169.     {
  170.       register int key = hash (str, len);
  171.  
  172.       if (key <= MAX_HASH_VALUE && key >= 0)
  173.         {
  174.           register char *s = wordlist[key];
  175.  
  176.           if (len == lengthtable[key]
  177.               && *s == *str && !strcmp (str + 1, s + 1))
  178.             return s;
  179.         }
  180.     }
  181.   return 0;
  182. }
  183.